W mojej pracy pokażę ilość zgonów z powodu zażywania narkotyków w przeliczeniu na 100,000 osób w poszczególnych krajach. Ramka danych, której użyję pochodzi ze strony ourworldindata.org : https://ourworldindata.org/grapher/death-rates-from-drug-use-disorders?tab=table
Zawiera kolumnę z nazwą kraju, rokiem i ilością zgonów w przeliczeniu na 100,000 osób.
Najpierw dopasowuje nazwy krajów z kolumny tej ramki do nazw krajów w ramce z pakietu maps i wybieram dane z roku 2019.
setwd("C:\\Users\\rogal\\RStudio-workspace\\Hw3")
library(dplyr)
library(ggplot2)
library(maps)
library(plotly)
ramka<-read.csv("DrugsData.csv")
colnames(ramka)[4]<-"deaths"
ramka<- ramka %>% filter(Year==2019)
world<-map_data("world")
ramka$Entity <- ifelse(ramka$Entity == "United States", "USA", ramka$Entity)
ramka$Entity <- ifelse(ramka$Entity == "Cote d'Ivoire", "Ivory Coast", ramka$Entity)
ramka$Entity <- ifelse(ramka$Entity == "Czechia", "Czech Republic", ramka$Entity)
ramka$Entity <- ifelse(ramka$Entity == "United Kingdom", "UK", ramka$Entity)
ramka$Entity <- ifelse(ramka$Entity == "Congo", "Republic of Congo", ramka$Entity)
ramka$Entity <- ifelse(ramka$Entity == "Democratic Republic of Congo", "Democratic Republic of the Congo", ramka$Entity)
Teraz łączę dwie ramki, aby znajdował się tu każdy kraj, odrzucam Antarktydę, bo nie ma tam danych, a bardzo rzuca się w oczy. Następnie tworzę wykres, na którym kraje są pokolorowane zgodnie z liczbą zgonów w przeliczeniu na 100 000 osób. Używam skali logarytmicznej, aby różnice były lepiej widoczne.
left_join(world,ramka,by=c("region"="Entity"))->joined
joined<- joined %>% filter(long<=180, region!="Antarctica")
color_pal<- colorRampPalette(c("#b1f8d0", "#0b206e"))(100)
ggplot()+
geom_polygon(data=joined, aes(x=long,y=lat,group=group,fill=deaths, text= paste("Country: ",region, "\n", "Deaths per 100,000 people:", deaths)), color="grey2",linewidth=0.1)+
coord_map("mollweide")+
scale_fill_gradientn(trans="log2",colors=color_pal) +
theme_minimal()+
theme(axis.title.x = element_blank(),
axis.text.x = element_blank(),
axis.ticks.x = element_blank(),
axis.title.y = element_blank(),
axis.text.y = element_blank(),
axis.ticks.y = element_blank(),
legend.title= element_text(size=5))+
labs(fill="Deaths per 100,000 people")->plot1
Dodaje opcje interaktywności :
ggplotly(plot1,tooltip = "text") %>%
layout(title= list(text="Deaths from drug use per 100,000 people around the world in 2019", x=0.5, y=0.85, font=list(size=13)))->final_plot
Interaktywna mapa:
Wnioski z mapy nie są dla mnie zaskakujące, mianowicie USA jest krajem z największą śmiertelnością z powodu narkotyków.